{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ALD Classification - \n",
    "Anthony DiBenedetto\n",
    "\n",
    "This program uses Support Vector Machine (SVM) to classify the ALD data. The accuracy of the classification is caculated and printed out in on the of the bottom cells. Also shown is a confusion matrix of the classification to show the accuracy of the classification. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import Libraries\n",
    "from sklearn import svm\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the training and test data\n",
    "training_data = (np.load('ALD_Classification_dataset/training_data.npy'))\n",
    "training_labels = (np.load('ALD_Classification_dataset/training_labels.npy'))\n",
    "\n",
    "testing_data = (np.load('ALD_Classification_dataset/testing_data.npy'))\n",
    "testing_labels = (np.load('ALD_Classification_dataset/testing_labels.npy'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = training_data\n",
    "y_train = training_labels\n",
    "\n",
    "\n",
    "X_test = testing_data\n",
    "y_test = testing_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SVC(C=128, degree=2, random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">SVC</label><div class=\"sk-toggleable__content\"><pre>SVC(C=128, degree=2, random_state=42)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "SVC(C=128, degree=2, random_state=42)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Initialize the nearest neighbor classifier and fit the model with the training data\n",
    "classifier = svm.SVC(C=128, kernel=\"rbf\", degree=2, decision_function_shape='ovr', random_state=42)\n",
    "classifier.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use the model to predict 0 or 1 from the X_test\n",
    "y_pred = classifier.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 97.20%\n",
      "Confusion matrix:\n",
      " [[605  14]\n",
      " [ 14 367]]\n"
     ]
    }
   ],
   "source": [
    "# Generate the accuracy from the predicted y values (y_pred) and y_test \n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print(\"Accuracy: {:.2f}%\".format(accuracy*100))\n",
    "\n",
    "# Generate the confusion matrix from predicted y values (y_pred) and y_test \n",
    "cm = confusion_matrix(y_test, y_pred)\n",
    "print(\"Confusion matrix:\\n\", cm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Use seaborn package to make the confusion matrix look nice, as well as normilize the confusion matrix\n",
    "import seaborn as sns\n",
    "cm_normalized = np.round(cm/np.sum(cm, axis=1).reshape(-1, 1), 2) \n",
    "sns.heatmap(cm_normalized, cmap=\"Greens\", annot=True)\n",
    "plt.xlabel(\"Predicted Label\")\n",
    "plt.ylabel(\"Actual Label\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "# Reduce dataset dimensions to 2D using PCA\n",
    "pca = PCA(n_components=2)\n",
    "X_train_2D = pca.fit_transform(X_train)\n",
    "X_test_2D = pca.transform(X_test)\n",
    "\n",
    "# Train SVM classifier\n",
    "classifier = svm.SVC(C=128, kernel=\"rbf\", degree=2, decision_function_shape='ovr', random_state=42)\n",
    "classifier.fit(X_train_2D, y_train)\n",
    "\n",
    "# Create a meshgrid\n",
    "h = 0.02  # step size in the mesh\n",
    "x_min, x_max = X_train_2D[:, 0].min() - 1, X_train_2D[:, 0].max() + 1\n",
    "y_min, y_max = X_train_2D[:, 1].min() - 1, X_train_2D[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
    "\n",
    "# Plot decision boundaries\n",
    "Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "Z = Z.reshape(xx.shape)\n",
    "plt.contourf(xx, yy, Z, alpha=0.8)\n",
    "plt.scatter(X_train_2D[:, 0], X_train_2D[:, 1], c=y_train, edgecolors='k', marker='o', label='Training Data')\n",
    "plt.scatter(X_test_2D[:, 0], X_test_2D[:, 1], c=y_test, edgecolors='k', marker='s', label='Testing Data')\n",
    "plt.xlabel('Feature 1')\n",
    "plt.ylabel('Feature 2')\n",
    "plt.title('SVM Decision Boundary')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "11f5c4aeecadc3e88c152309abda6ed29843603433e3c3abe7ec8b133e6a3d72"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
